package TecMaster.Ui;

import java.awt.BorderLayout;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

import TecMaster.Cliente;
import TecMaster.Equipamentos.Equipamento;

/**
 * Classe Responsavel pela tela de Consulta de cliente.
 * 
 */
public class ConsultaCliente extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;
	private JTextField tfNomeCliente;
	private Opcoes opcoes;
	private JPanel panel, panelCliente, panelEquipamento;
	private JButton botaoConcluir;
	private JTable tabela;

	public ConsultaCliente(Opcoes telaDeOpcoes, Cliente cliente,
			List<Equipamento> listaEquip) {
		super("TecMaster - Consulta Cliente");
		setIconImage(Toolkit.getDefaultToolkit().getImage(
				getClass().getResource("/imagens/TM.png")));
		this.opcoes = telaDeOpcoes;
		panel = new JPanel(null);
		panel.setBackground(Color.LIGHT_GRAY);
		setBounds(new java.awt.Rectangle(0, 0, 300, 300));
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(panel, BorderLayout.CENTER);

		// CLIENTE
		panelCliente = new JPanel(null);
		panelCliente.setBackground(Color.LIGHT_GRAY);
		panelCliente.setBorder(new TitledBorder("Cliente"));
		panelCliente.setBounds(25, 15, 480, 60);

		tfNomeCliente = new JTextField();
		tfNomeCliente.setEditable(false);
		tfNomeCliente.setText(cliente.getNome());
		tfNomeCliente.setBounds(30, 20, 380, 25);

		panelCliente.add(tfNomeCliente);

		// EQUIPAMENTO
		panelEquipamento = new JPanel(new FlowLayout());
		panelEquipamento.setBackground(Color.LIGHT_GRAY);
		panelEquipamento.setBorder(new TitledBorder("Equipamentos"));
		panelEquipamento.setBounds(25, 90, 480, 150);

		// CONCLUIR
		botaoConcluir = new JButton("Concluir");
		botaoConcluir.setIcon(new ImageIcon(getClass().getResource(
				"/imagens/accept.png")));
		botaoConcluir.setBounds(210, 250, 105, 30);
		botaoConcluir.addActionListener(this);

		// TABELA
		String[] nomeColuna = { "Tipo", "Marca", "Defeito", "Garantia",
				"Codigo" };
		String[][] dados = new String[listaEquip.size()][5];
		for (int i = 0; i < listaEquip.size(); i++) {
			String[] lista = new String[5];
			lista[0] = listaEquip.get(i).getClass().getCanonicalName()
					.substring(23);
			lista[1] = listaEquip.get(i).getMarca().toString();
			lista[2] = listaEquip.get(i).getDefeito().toString().replace("_",
					" ");
			lista[3] = listaEquip.get(i).stringGarantia();
			lista[4] = listaEquip.get(i).getCodigo();
			dados[i] = lista;
		}
		tabela = new JTable(dados, nomeColuna);
		tabela.setEnabled(false);
		tabela.setPreferredScrollableViewportSize(new Dimension(450, 85));
		tabela.setFillsViewportHeight(true);

		JScrollPane scrollPane = new JScrollPane(tabela);

		tabela.getColumnModel().getColumn(0).setPreferredWidth(110);
		tabela.getColumnModel().getColumn(0).setResizable(false);
		tabela.getColumnModel().getColumn(1).setPreferredWidth(110);
		tabela.getColumnModel().getColumn(1).setResizable(true);
		tabela.getColumnModel().getColumn(2).setPreferredWidth(110);
		tabela.getColumnModel().getColumn(2).setResizable(false);
		tabela.getColumnModel().getColumn(3).setPreferredWidth(60);
		tabela.getColumnModel().getColumn(3).setResizable(false);
		tabela.getColumnModel().getColumn(4).setPreferredWidth(60);
		tabela.getColumnModel().getColumn(4).setResizable(false);
		tabela.getTableHeader().setReorderingAllowed(false);
		tabela.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);

		panelEquipamento.add(scrollPane);
		panel.add(botaoConcluir);
		panel.add(panelCliente);
		panel.add(panelEquipamento);

		pack();
		setSize(530, 320);
		setResizable(false);
		setVisible(true);
		setLocationRelativeTo(null);
		addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent evt) {
				getOpcoes().setVisible(true);
				dispose();
			}
		});
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == botaoConcluir) {
			getOpcoes().setVisible(true);
			dispose();
		}
	}

	/**
	 * Retorna a tela de opcoes
	 * 
	 * @return a tela de opcoes
	 */
	public Opcoes getOpcoes() {
		return opcoes;
	}
}
